package com.example.generator;

import java.text.SimpleDateFormat; // 正确的类名
import java.util.Date;
import java.util.Random;

public class OrderNoGenerator {
    // 订单前缀（可自定义）
    private static final String PREFIX = "ORD";
    // 日期格式（yyyyMMdd）
    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd"); // 修正类名
    // 随机数生成器（单例，保证线程安全）
    private static final Random random = new Random();
    // 上次生成订单号的日期
    private static String lastDate;

    /**
     * 生成订单号：ORD + 年月日 + 4位随机数
     * 格式示例：ORD202508081593
     */
    public static synchronized String generateOrderNo() {
        // 1. 获取当前日期（yyyyMMdd）
        String currentDate = DATE_FORMAT.format(new Date());

        // 2. 每日重置随机数种子（降低重复概率）
        if (!currentDate.equals(lastDate)) {
            random.setSeed(currentDate.hashCode()); // 使用当前日期作为种子
            lastDate = currentDate;
        }

        // 3. 生成4位随机数（1-9999，避免0000）
        int randomNum = 1 + random.nextInt(9999);
        String randomStr = String.format("%04d", randomNum);

        // 4. 拼接订单号
        return PREFIX + currentDate + randomStr;
    }
}
